function _new(fun) {
    // a、创建一个空的JavaScript对象（即{ } ）
    let obj = {};
    // b、空对象的_proto_指向构造函数的prototype，也就是将 obj.constructor 指向构造函数
    obj.__proto__ = fun.prototype;
    // c、将this指向创建的对象上下文
    let result = fun.apply(obj);
    // d、返回对象
    if (result && (typeof (result) == "object" || typeof (result) == "function")) {
        // 如果构造函数执行的结果返回的是一个对象，那么返回这个对象
        return result;
    }
    // 如果构造函数返回的不是一个对象，返回创建的新对象
    return obj;
}